package Learn;

import java.util.Iterator;
import java.util.LinkedList;

public class LinkedListDemo1 {
    //底层是双向链表
    //LinkedList
    //有很多操作头尾的api
    public static void main(String[] args) {
        LinkedList<String> lin=new LinkedList<>();

        //LinkedList底层是由双向链表写的
        //头尾元素

        //add源码
        //创建一个临时变量储存last
        // 再创建一个新的节点 保存传入的元素 它的prev是l（last） next是null
        //让last=新的节点
        //判断如果first为空 那么新节点就是first
        //如果first不为空 就让上一任last的next等于新节点

        lin.add("aaa");
        lin.add("abb");
        lin.add("acc");


        //迭代器源码
        //有一个处理并发修改异常的 就是在集合add 或者remove的时候有个值来记录次数
        //在迭代器遍历的过程中 先检查当前次数是否等于原来记录的次数
        //如果不等于那么报错
        //这就是为什么迭代器遍历时不能用集合的方法来进行增删 只能使用迭代器来增删

//        Iterator<String> it=lin.iterator();
//        while(it.hasNext()){
//            String next = it.next();
//            System.out.println(next);
//        }


    }

}
